/*
 * 对树上所有节点图0,1,同一条边的两个端点不能同时涂1的方案数
 */

#include <bits/stdc++.h>
using namespace std;

#define int long long

const int mod=1e9+7;

void solve(){
	int n;cin>>n;
	vector<vector<int>> g(n+1);
	for(int i=0;i<n-1;i++){
		int u,v;cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	vector<array<int,2>> f(n+1);
	auto dfs=[&](auto&&dfs,int x,int fa)->void{
		f[x][1]=1;
		f[x][0]=1;
		for(int y:g[x]){
			if(y!=fa){
				dfs(dfs,y,x);
				f[x][0]*=(f[y][0]+f[y][1])%mod;
				f[x][0]%=mod;
				f[x][1]*=f[y][0];
				f[x][1]%=mod;
			}
		}
	};
	dfs(dfs,1,0);
	cout<<(f[1][0]+f[1][1])%mod;
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	int t=1;
	// cin>>t;
	while(t--){
		solve();
		if(t)cout<<"\n";
	}
	return 0;
}
